package Exercise;

public class RegexExe3 {
    public static void main(String[] args) {
        //分组 ()即为一组
        //判断一个字符是否开始与结束一致

        //内部分组 表示正则表达式内的分组
        // \\x 即为x组 左往右出现的第一个左括号就是1组 第二个就是2组
        String regex1="(.).+\\1";

        System.out.println("a123a".matches(regex1));
        System.out.println("bgorehb".matches(regex1));
        System.out.println("basopca".matches(regex1));
        System.out.println("___________________________");
        //多个字符
        String regex2="(.+).+\\1";
        System.out.println("bgorehb".matches(regex2));
        System.out.println("abcavaoiabc".matches(regex2));
        System.out.println("abaposajvabc".matches(regex2));
        System.out.println("___________________________");
        //开始部分每一个都要一样并且 开始和结束一样
        String regex3="((.)+).+\\1";
        String regex4="((.)\\2*).+\\1";
        System.out.println("aaa1122aaa".matches(regex4));
        System.out.println("abc112111abc".matches(regex3));
        System.out.println("&|abc&|".matches(regex3));
        System.out.println("___________________________");

        //外部分组 $x  表示第x组
        String s="我要学学学变变变成成成成成";
        String result=s.replaceAll("(.)\\1+","$1");
        System.out.println(result);

        //以上为捕获分组
        //非捕获分组
        //不想让()内的分组 只是用一次而已 那么用到非捕获分组
        //(?:) 一般用的多

    }
}
